home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 03 Demos and Info / ASMTXT.SDA / ASM4 < prev   
Encoding:
Text File  |  2019-04-13  |  4.6 KB  |  133 lines

  1.  
  2.  
  3.  
  4.      ┴TARI ┴SSEMBLER ├OURSE
  5.      (EDITED FOR ├OMMODORE)
  6. -----------------------------------
  7.   4.1   ╘HE ╙TACK
  8.  
  9.   ╘HE ╙TACK OCCUPIES 256 BYTES OF MEMORY FROM $100 TO $1╞╞ OR ALL OF "PAGE ONE"
  10. AND IS USED BY BOTH THE PROCESSOR AND THE PROGRAMMER FOR TEMPORARY STORAGE. ╘HE
  11. STACK IS FILLED FROM ITS TOP ($1╞╞) TO ITS BOTTOM ($100) ON A "LAST-IN,
  12. FIRST-OUT" BASIS. ╚ERE ARE SOME INSTRUCTIONS THAT UTILIZE THE STACK:
  13.  
  14.  
  15.  4.1.1  ╩╙╥/╥╘╙ - "╟OSUB/╥ETURN"
  16.  
  17.  ,-----.
  18.  ▄ ╩╙╥ ▄ -- ╩UMP TO ╙UBROUTINE
  19.  '-----'
  20.  
  21.  ,-----.
  22.  ▄ ╥╘╙ ▄ -- ╥ETURN FROM ╙UBROUTINE
  23.  '-----'
  24.  
  25.   ╘HE ╩╙╥ OPERATION IS SIMILAR TO THE ┬┴╙╔├ "╟╧╙╒┬" COMMAND. ╔T ALLOWS A
  26. PROGRAM TO BE STRUCTURE WITH SUBROUTINES THAT ARE USED REPEATEDLY. ╫HEN A
  27. SUBROUTINE IS "CALLED", THE 6502 SAVES ITS PRESENT LOCATION IN THE MAIN PROGRAM
  28. ON THE STACK WITH THE HIGH BYTE FIRST. ╫HEN AN ╥╘╙ IS ENCOUNTERED AT THE END OF
  29. THE SUBROUTINE, THE 6502 RECOVERS THE RETURN ADDRESS BACK FROM THE STACK AND
  30. CONTINUES WITH THE MAIN PROGRAM. ╘HIS OPERATION IS IMPORTANT TO REMEMBER IF YOU
  31. PLAN ON USING THE STACK FOR OTHER PURPOSES.
  32.  
  33.  
  34.  4.1.2  ╨╠┴/╨╙╚ - "╨ULL/╨USH" ╙TACK
  35.  
  36.  ,-----.
  37.  ▄ ╨╠┴ ▄ -- "╨ULL" ┴CC. FROM ╙TACK
  38.  '-----'
  39.  
  40.  ,-----.
  41.  ▄ ╨╚┴ ▄ -- "╨USH" ┴CC. ON ╙TACK
  42.  '-----'
  43.  
  44.   ╘HE ╨╠┴ INSTRUCTION REMOVES A BYTE FROM THE STACK, SAVES IT IN THE
  45. ACCUMULATOR, AND MOVES THE STACK-POINTER TO THE PREVIOUS BYTE. ╘HE ╨╚┴ IS THE
  46. OPPOSITE OF THE ╨╠┴; IT TRANFERS THE ACCUMULATOR TO THE STACK AND POINTS TO THE
  47. NEXT SPACE ON THE STACK. ╘HESE OPERATIONS ALLOWS THE PROGRAMMER TO USE THE
  48. STACK FOR TEMPORARY STORAGE OR FOR PASSING PARAMETERS TO SUBROUTINES. ┬UT,
  49. REMEMBER THAT THE PROCESSOR USES THE STACK TO SAVE THE RETURN ADDRESS FROM A
  50. SUBROUTINE.
  51.  
  52.  
  53.  4.1.3  ╘╙╪/╘╪╙ - ╘RANSFER
  54.                     ╙TACK-╨OINTER
  55.  
  56.  ,-----.
  57.  ▄ ╘╙╪ ▄ -- ╘RANSFER ╙TACK-╨OINTER
  58.  '-----'      TO THE ╪-╥EGISTER
  59.  
  60.  ,-----.
  61.  ▄ ╘╪╙ ▄ -- ╘RANSFER ╪-╥EGISTER TO
  62.  '-----'      THE ╙TACK-╨OINTER
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.   ╔F THE STACK IS USED EXSTENSIVELY, IT MAY FILL COMPLETELY TO THE BOTTOM OF
  70. PAGE-ONE ($100). ╔N SOME APPLICATIONS, IT MAY BE NECESSARY TO CHECK HOW "FULL"
  71. THE STACK IS. ╘HE ╘╙╪ OPERATION TRANSFERS THE STACK-POINTER TO THE ╪-REGISTER
  72. SO THAT THIS CONDITION MAY BE CHECKED. ┴FTER THE ╘╙╪ INSTRUCTION, THE ╪
  73. REGISTER CONTAINS THE LOCATION WITHIN PAGE-ONE WHERE THE NEXT BYTE WILL GO ON
  74. THE STACK. ╘HE ╘╪╙ INSTRUCTION CHANGES THE STACK-POINTER TO THE VALUE OF THE
  75. ╪-REGISTER. ╘HIS IS USED FORCE THE STACK TO POINT TO A CERTAIN LOCATION WITHIN
  76. PAGE-ONE. 
  77.  
  78.  
  79.  4.2 ╔NDEXED ┴DDRESSING
  80.  
  81.    ╙O FAR, WE HAVE USED "IMMEDIATE" ADDRESSING SUCH AS "╠─┴ #10" TO OPERATE ON
  82. CONSTANTS, "ABSOLUTE" ADDRESSING SUCH AS "╠─┴ $1000" TO OPERATE ON MEMORY, AND
  83. "RELATIVE" ADDRESSING LIKE "┬┼╤ ╠╧╧╨" TO CONTROL BRANCHING. ┴NOTHER FORM OF
  84. ADDRESSING USES THE INDEX REGISTERS, ╪ OR ┘, TO GIVE US A VARIABLE OFFSET INTO
  85. MEMORY AND, NATURALLY, IT IS CALLED "INDEXED" ADDRESSING. ┬ECAUSE THIS ACTS AS
  86. AN INDEX INTO A STRING OR ARRAY, IT BECOMES VERY USEFUL IN OUR PROGRAMMING
  87. STRUCTURES. ╔N THE FOLLWING EXAMPLE, A ┬┴╙╔├ PROGRAM AND ITS ┴SSEMBLY ╠ANGUAGE
  88. EQUIVALENT ARE SHOWN FOR A SIMPLE STRING ASSIGNMENT AND INDEXING.
  89.  
  90. 10 ╙1$="┼╪┴═╨╠┼ #1"
  91. 20 ╙2$=╙1$
  92. 30 ┴=┴╙├(═╔─$(╙1$,4))
  93.  
  94.  
  95. 10  *=$4000             ;START AT HEX 4000.
  96. 20 ╙╘┴╥╘  ╠─╪ #9        ;FOR 0->9...
  97. 30 ╙╘┴╥╘1 ╠─┴ ╙╘╥╔╬╟1,╪ ;MOVE FROM.
  98. 40        ╙╘┴ ╙╘╥╔╬╟2,╪ ;MOVE TO.
  99. 50        ─┼╪           ;FOR EACH CHAR.
  100. 60        ┬╨╠ ╙╘┴╥╘1    ;UNTIL ╪<0.
  101. 70        ╠─╪ #3        ;THE 4TH CHAR.
  102. 80        ╠─┴ ╙╘╥╔╬╟2,╪ ;OF ╙╘╥╔╬╟2
  103. 90        ┬╥╦           ;BACK TO CARTRIDGE.
  104. 100 ;THE ┴CC. WILL CONTAIN THE 4TH
  105. 110 ;CHARACTER OR $4─ FOR ┴╙├("═").
  106. 120 ;╘HE STRINGS WILL BE SAVED IN
  107. 130 ;MEMORY RIGHT AFTER THE PROGRAM:
  108. 140 ╙╘╥╔╬╟1 .┬┘╘┼ "┼╪┴═╨╠┼ #1" ;RESERVE 10 BYTES AND INITIALIZE.
  109. 150 ╙╘╥╔╬╟2 *=*+10 ;RESERVE 10 BYTES WITHOUT INITIALIZING.
  110. 160  .┼╬─ ;OPTIONAL END OF PROGRAM.
  111.  
  112.  
  113.  4.3  ╙OME ┴SSEMBLER "─IRECTIVES"
  114.  
  115. ╬OTE--DIFFERENT ┴SSEMBLERS HAVE DIFFERENT "DIRECTIVES"--READ YOUR ┴SSEMBLER 
  116. MANUAL TO LEARN ABOUT YOUR DIRECTIVES "─IRECTIVES" ARE INSTRUCTION THAT TELL THE 
  117. ┴SSEMBLER TO DO SOMETHING DURING THE ASSEMBLY OF THE SOURCE CODE TO MACHINE 
  118. CODE. ╘HEY ARE SOMETIMES CALLED "PSEUDO OPS" BECAUSE THEY ARE USED ALONG WITH 
  119. THE NORMAL OP-CODES. ╔N THE ├OMMODORE ┴SSEMBLER, AND IN MANY OTHERS, DIRECTIVES 
  120. ARE IDENTIFIED BY A "." AT THE BEGINNING. ╘HE EXCEPTION IS THE "*=" OR ORIGIN 
  121. DIRECTIVE.
  122.   ═OST OF THE DIRECTIVES EFFECT THE WAY THE LISTING IS FORMATED DURING ASSEMBLY 
  123. TIME AND DON'T GENERATE ANY CODE. ┬UT, AS WE'VE SEEN, OTHERS LIKE THE ".┬┘╘┼" 
  124. DIRECTIVE CAN ACTUALLY GENERATE DATA IN THE PROGRAM.  ╥EAD YOUR ┴SSEMBLER/┼DITOR 
  125. MANUAL AND READ SOME PROGRAM LISTINGS TO BECOME FAMILIAR WITH THE USE OF 
  126. DIRECTIVES.
  127.  
  128.  
  129.   ╩OHN ─E═AR 71066,337  EDITED BY ╩OEL ╥UBIN 70007,576        3/29/84
  130.  
  131.  
  132.  
  133.